Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/navigation/ConnectionsNavigation.kt 8f9eec5c0819ec4d9b8a69e6dfc7aaacd86e30a6 (8f9eec5c) Text, 4.10 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.connections.navigation

Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.saveable.rememberSaveable
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.navigation3.runtime.EntryProviderScope
Tff7b72import T7ee787androidx.navigation3.runtime.NavBackStack
Tff7b72import T7ee787androidx.navigation3.runtime.NavKey
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.koin.compose.viewmodel.koinViewModel
Tff7b72import T7ee787org.meshtastic.core.navigation.ConnectionsRoute
Tff7b72import T7ee787org.meshtastic.core.navigation.NodesRoute
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.cancel
Tff7b72import T7ee787org.meshtastic.core.resources.connect
Tff7b72import T7ee787org.meshtastic.core.resources.deep_link_connect_message
Tff7b72import T7ee787org.meshtastic.core.resources.deep_link_connect_title
Tff7b72import T7ee787org.meshtastic.core.resources.deep_link_disconnect_message
Tff7b72import T7ee787org.meshtastic.core.resources.deep_link_disconnect_title
Tff7b72import T7ee787org.meshtastic.core.resources.disconnect
Tff7b72import T7ee787org.meshtastic.core.ui.component.MeshtasticDialog
Tff7b72import T7ee787org.meshtastic.feature.connections.NO_DEVICE_SELECTED
Tff7b72import T7ee787org.meshtastic.feature.connections.ScannerViewModel
Tff7b72import T7ee787org.meshtastic.feature.connections.ui.ConnectionsScreen
Tff7b72import T7ee787org.meshtastic.feature.settings.radio.RadioConfigViewModel

T8b949e/** Navigation graph for for the top level ConnectionsScreen - [ConnectionsRoute.Connections]. */
Tff7b72fun Td2a8ffEntryProviderScopeTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4.Te6edf3connectionsGraphTb4b4b4(Te6edf3backStackTb4b4b4: Te6edf3NavBackStackTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4) Tb4b4b4{
Te6edf3entryTff7b72<Te6edf3ConnectionsRouteTb4b4b4.Te6edf3ConnectionsTff7b72> Tb4b4b4{ Te6edf3key Tff7b72-Tff7b72>
Tff7b72val Te6edf3scanModel Tff7b72= Te6edf3koinViewModelTff7b72<Te6edf3ScannerViewModelTff7b72>Tb4b4b4(Tb4b4b4)

T8b949e// A deep link (e.g. from AI/automation tooling) may name a device address, or `n` to disconnect. The
T8b949e// `connections` path is a verified https://meshtastic.org app link, so any web page can fire one at us —
T8b949e// always confirm before re-pointing or dropping the radio connection.
Tff7b72var Te6edf3pendingAddress Tff7b72by Te6edf3rememberSaveableTb4b4b4(Te6edf3keyTb4b4b4.Te6edf3addressTb4b4b4) Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Te6edf3keyTb4b4b4.Te6edf3addressTff7b72?.Te6edf3takeIfTb4b4b4(Tffa657StringTff7b72::Te6edf3isNotBlankTb4b4b4)Tb4b4b4) Tb4b4b4}

Te6edf3pendingAddressTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3address Tff7b72-Tff7b72>
Tff7b72val Te6edf3isDisconnect Tff7b72= Te6edf3address Tff7b72=Tff7b72= Te6edf3NO_DEVICE_SELECTED
Te6edf3MeshtasticDialogTb4b4b4(
Te6edf3titleRes Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isDisconnectTb4b4b4) Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3deep_link_disconnect_title Tff7b72else Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3deep_link_connect_titleTb4b4b4,
Te6edf3message Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3isDisconnectTb4b4b4) Tb4b4b4{
Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3deep_link_disconnect_messageTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3deep_link_connect_messageTb4b4b4, Te6edf3addressTb4b4b4)
Tb4b4b4}Tb4b4b4,
Te6edf3confirmTextRes Tff7b72= Tff7b72if Tb4b4b4(Te6edf3isDisconnectTb4b4b4) Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3disconnect Tff7b72else Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3connectTb4b4b4,
Te6edf3onConfirm Tff7b72= Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isDisconnectTb4b4b4) Te6edf3scanModelTb4b4b4.Te6edf3disconnectTb4b4b4(Tb4b4b4) Tff7b72else Te6edf3scanModelTb4b4b4.Te6edf3changeDeviceAddressTb4b4b4(Te6edf3addressTb4b4b4)
Te6edf3pendingAddress Tff7b72= Tff7b72null
Tb4b4b4}Tb4b4b4,
Te6edf3dismissTextRes Tff7b72= Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3cancelTb4b4b4,
Te6edf3onDismiss Tff7b72= Tb4b4b4{ Te6edf3pendingAddress Tff7b72= Tff7b72null Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}

Te6edf3ConnectionsScreenTb4b4b4(
Te6edf3scanModel Tff7b72= Te6edf3scanModelTb4b4b4,
Te6edf3radioConfigViewModel Tff7b72= Te6edf3koinViewModelTff7b72<Te6edf3RadioConfigViewModelTff7b72>Tb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3onClickNodeChip Tff7b72= Tb4b4b4{ Te6edf3id Tff7b72-Tff7b72> Te6edf3backStackTb4b4b4.Te6edf3addTb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodeDetailTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3onNavigateToNodeDetails Tff7b72= Tb4b4b4{ Te6edf3id Tff7b72-Tff7b72> Te6edf3backStackTb4b4b4.Te6edf3addTb4b4b4(Te6edf3NodesRouteTb4b4b4.Te6edf3NodeDetailTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3onConfigNavigate Tff7b72= Tb4b4b4{ Te6edf3route Tff7b72-Tff7b72> Te6edf3backStackTb4b4b4.Te6edf3addTb4b4b4(Te6edf3routeTb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.2 - Generated in 0.06s